home *** CD-ROM | disk | FTP | other *** search
/ TPUG - Toronto PET Users Group / TPUG Users Group CD / TPUG Users Group CD.iso / COMAL / U-User Group / (k)u3.d64 / nec8023 scrndump < prev    next >
Text File  |  2007-02-28  |  7KB  |  201 lines

  1. 9000 //   LIST "@0:NEC8023 SCRNDUMP"
  2. 9001 //
  3. 9002 //      ░└└└└└└└└└└└└└└└└└└└«
  4. 9003 //  ░└└└│NEC8023 SCREEN DUMP½└└└«
  5. 9004 //  ▌   ¡└└└└└└└└└└└└└└└└└└└╜   ▌
  6. 9005 //  ▌ BY:     T.B.H.KUIPER 1984 ▌
  7. 9006 //  ▌ MODIFIED BY HARRY SEIDMAN ▌
  8. 9007 //  ½└└└└└└└└└└└└└└└└└└└└└└└└└└└│
  9. 9008 //  ▌ THIS PROGRAM DUMPS THE    ▌
  10. 9009 //  ▌ HIGH RESOLUTION BIT MAP   ▌
  11. 9010 //  ▌ TO THE LINE PRINTER. 8 BIT▌
  12. 9011 //  ▌     ░└└└└└└└└└└└└└└└«     ▌
  13. 9012 //  ½└└└└└│EXAMPLE OF USE:½└└└└└│
  14. 9013 //  ▌     ¡└└└└└└└└└└└└└└└╜     ▌
  15. 9014 //  ▌ YOU CAN MERGE THIS PROGRAM▌
  16. 9015 //  ▌ WITH YOUR OWN. WHEN YOU   ▌
  17. 9016 //  ▌ WANT A SCREEN DUMP, CALL  ▌
  18. 9017 //  ▌ THE PROC "NEC'SCREENDUMP" ▌
  19. 9018 //  ▌ TO PRINT A PICTURE OF THE ▌
  20. 9019 //  ▌ CURRENT HI-RES SCREEN.    ▌
  21. 9020 //  ▌ THIS SYSTEM IS NOW SET UP ▌
  22. 9021 //  ▌ TO BE USED WITH THE CARDCO▌
  23. 9022 //  ▌ MODEL "A" OR OTHER "DUMB" ▌
  24. 9023 //  ▌ PRINTER INTERFACE.        ▌
  25. 9024 //  ▌                           ▌
  26. 9025 //  ▌                           ▌
  27. 9026 //  ▌                           ▌
  28. 9027 //  ▌                           ▌
  29. 9028 //  ▌                           ▌
  30. 9029 //  ▌                           ▌
  31. 9030 //  ¡└└└└└└└└└└└└└└└└└└└└└└└└└└└╜
  32. 9031 //
  33. 9032 PROC NEC'DUMP 
  34. 9033 PRINT CHR$(142)
  35. 9034 PRINT "ôPLEASE WAIT, I'M WORKING."
  36. 9035 DIM HSBIT(256)
  37. 9036 MIRRORBIT(HSBIT)
  38. 9037 READ'HIDDEN'RAM'SETUP
  39. 9038 BIT'MAP'PRINT(HSBIT)
  40. 9039 END 
  41. 9040 ENDPROC NEC'DUMP
  42. 9041 //
  43. 9042 PROC BIT'MAP'PRINT(REF HSBIT()) CLOSED
  44. 9043 PRINT CHR$(147)
  45. 9044 DIM YN$ OF 1
  46. 9045 INPUT "DO YOU WANT TO REVERSE THE IMAGE ? N¥": YN$
  47. 9046 CASE YN$ OF
  48. 9047 WHEN "N","╬"
  49. 9048 HSMASK:=0
  50. 9049 OTHERWISE 
  51. 9050 HSMASK:=255
  52. 9051 ENDCASE 
  53. 9052 BIT'MAP:=57344
  54. 9053 NUM'DOTS:=200 //VERTICAL SCREEN RESOLUTION
  55. 9054 NUM'DOTS'HI:=INT(NUM'DOTS/256)
  56. 9055 NUM'DOTS'LO:=NUM'DOTS-256*NUM'DOTS'HI
  57. 9056 DIM OUT$ OF NUM'DOTS+6
  58. 9057 SELECT OUTPUT "LP:"
  59. 9058 SKIP'LINES(20) // CENTER PLOT ON PAGE
  60. 9059 //
  61. 9060 PRINT CHR$(27)+"T16"+CHR$(27)+">" // LINE FEED TO 16/144 INCH
  62. 9061 FOR COLUMN:=0 TO 39 DO
  63. 9062 OUT$:=CHR$(27)+"S0200" // CLEAR PREVIOUS LINE FROM OUTPUT STRING
  64. 9063 FOR II#:=1 TO NUM'DOTS-176 DO // PUT IN LEADING BLANKS...
  65. 9064 OUT$:=OUT$+CHR$(0) //          ...TO MOVE THE BIT-MAP...
  66. 9065 ENDFOR II# //                    ..       .IMAGE OFF THE PAPER MARGIN
  67. 9066 OUT$:=OUT$+CHR$(0)+CHR$(0)
  68. 9067 FOR ROW:=24 TO 0 STEP -1 DO // PUT ALL THE 'CHARACTERS' FROM THE ...
  69. 9068 CHAR'ADDR:=BIT'MAP+8*(COLUMN+40*ROW) // ...CURRENT COLUMN INTO THE ...
  70. 9069 GET'BYTES(CHAR'ADDR,OUT$,HSBIT,HSMASK) // ... OUTPUT STRING
  71. 9070 ENDFOR ROW
  72. 9071 PRINT OUT$ // PRINT THE COLUMN
  73. 9072 ENDFOR COLUMN
  74. 9073 OUT$:=""
  75. 9074 PRINT OUT$
  76. 9075 SKIP'LINES(20) //                    MOVE TO NEXT PAGE
  77. 9076 SELECT OUTPUT "DS:"
  78. 9077 ENDPROC BIT'MAP'PRINT
  79. 9078 //
  80. 9079 PROC SKIP'LINES(N) CLOSED
  81. 9080 FOR I:=1 TO N DO
  82. 9081 PRINT CHR$(10),
  83. 9082 ENDFOR I
  84. 9083 ENDPROC SKIP'LINES
  85. 9084 //
  86. 9085 PROC READ'HIDDEN'RAM'SETUP 
  87. 9086 //       TO READ HIDDEN RAM:
  88. 9087 //       SET UP MACHINE CODE BY CALLING THIS PROCEDURE,
  89. 9088 //       POKE ADDRESS TO READ INTO 842 (LOW BYTE) AND 843 (HIGH BYTE),
  90. 9089 //       SYS 829, AND
  91. 9090 //       PEEK CONTENTS FROM 855.
  92. 9091 //
  93. 9092 //   828        TEMPORARY STORAGE FOR MEMORY CONTROL REGISTER
  94. 9093 POKE 829,173 // LDA...             (SAVE...
  95. 9094 POKE 830,1 //      ...1 +          (...THE...
  96. 9095 POKE 831,0 //      ...0*256 (=1)   (...MEMORY...
  97. 9096 POKE 832,141 // STA...             (...CONTROL...
  98. 9097 POKE 833,60 //     ...60 +         (...SETTING
  99. 9098 POKE 834,3 //      ...3*256 (=828)
  100. 9099 POKE 835,120 // SEI                (DISABLE INTERRUPTS
  101. 9100 POKE 836,73 //  EOR...             (REVERSE...
  102. 9101 POKE 837,7 //      ...$7           (...THE...
  103. 9102 POKE 838,141 // STA...             (...MEMORY...
  104. 9103 POKE 839,1 //      ...             (...CONTROL...
  105. 9104 POKE 840,0 //      ...(=1)         (...SETTING
  106. 9105 POKE 841,173 // LDA...
  107. 9106 //   842           ...LOW BYTE OF ADDRESS TO READ
  108. 9107 //   843           ...HIGH BYTE OF ADDRESS TO READ
  109. 9108 POKE 844,141 // STA...             (FETCH...
  110. 9109 POKE 845,87 //     ...87 +         (...DESIGNATED...
  111. 9110 POKE 846,3 //      ...3*256 (=855) (..BYTE
  112. 9111 POKE 847,173 // LDA...             (RESTORE...
  113. 9112 POKE 848,60 //     ...             (...THE...
  114. 9113 POKE 849,3 //      ...(=828)       (...MEMORY...
  115. 9114 POKE 850,141 // STA...             (...CONTROL...
  116. 9115 POKE 851,1 //      ...             (...SETTING
  117. 9116 POKE 852,0 //      ...(=1)
  118. 9117 POKE 853,88 //  CLI                (ENABLE INTERRUPTS
  119. 9118 POKE 854,96 //  RTS
  120. 9119 //   855        CONTAINS RETRIEVED BYTE
  121. 9120 ENDPROC READ'HIDDEN'RAM'SETUP
  122. 9121 //
  123. 9122 PROC GET'BYTES(CHAR'ADDR,REF OUT$,REF HSBIT(),HSMASK) CLOSED
  124. 9123 // GET THE EIGHT BYTES OF A 'CHARACTER' FROM CHARACTER ROM OR BIT MAP ...
  125. 9124 // ... AND APPEND TO 'OUT$'.
  126. 9125 FOR BYTE#:=7 TO 0 STEP -1 DO
  127. 9126 BYTE'ADDR:=BYTE#+CHAR'ADDR
  128. 9127 HIGH'BYTE#:=INT(BYTE'ADDR/256)
  129. 9128 LOW'BYTE#:=BYTE'ADDR-256*HIGH'BYTE#
  130. 9129 POKE 842,LOW'BYTE#
  131. 9130 POKE 843,HIGH'BYTE#
  132. 9131 SYS 829
  133. 9132 BITVAL:=XOR(PEEK(855),HSMASK)+1
  134. 9133 BITVAL:=HSBIT(BITVAL)
  135. 9134 OUT$:=OUT$+CHR$(BITVAL)
  136. 9135 ENDFOR BYTE#
  137. 9136 ENDPROC GET'BYTES
  138. 9137 //
  139. 9138 FUNC SCREEN'CODE(ASCII$) CLOSED //RETURN SCREEN CODE VALUE OF CHARACTER
  140. 9139 AS:=ORD(ASCII$)
  141. 9140 RETURN LAND(AS,128)/2+LAND(AS,63)
  142. 9141 ENDFUNC SCREEN'CODE
  143. 9142 //
  144. 9143 FUNC LOGICAL'SET'UP(NUM,MASK,OP) CLOSED
  145. 9144 //
  146. 9145 // SET UP MACHINE CODE TO RESIDE
  147. 9146 // BETWEEN THE SCREEN AND THE
  148. 9147 // SPRITE POINTERS.
  149. 9148 //
  150. 9149 POKE 2024,169
  151. 9150 POKE 2025,NUM
  152. 9151 POKE 2026,OP
  153. 9152 POKE 2027,MASK
  154. 9153 POKE 2028,141
  155. 9154 POKE 2029,240
  156. 9155 POKE 2030,7
  157. 9156 POKE 2031,96
  158. 9157 SYS 2024
  159. 9158 RETURN PEEK(2032)
  160. 9159 ENDFUNC LOGICAL'SET'UP
  161. 9160 //
  162. 9161 FUNC LAND(NUM,MASK) CLOSED
  163. 9162 RETURN LOGICAL'SET'UP(NUM,MASK,41)
  164. 9163 ENDFUNC LAND
  165. 9164 //
  166. 9165 FUNC LOR(NUM,MASK) CLOSED
  167. 9166 RETURN LOGICAL'SET'UP(NUM,MASK,9)
  168. 9167 ENDFUNC LOR
  169. 9168 //
  170. 9169 FUNC XOR(NUM,MASK) CLOSED
  171. 9170 RETURN LOGICAL'SET'UP(NUM,MASK,73)
  172. 9171 ENDFUNC XOR
  173. 9172 END 
  174. 9173 PROC MIRRORBIT(REF VAL()) CLOSED
  175. 9174 //  THE PROWRITER NEED THE MIRROR IMAGE OF THE BIT PATTERN TO WORK PROPERLY
  176. 9175 // (I.E. 11000000 BECOMES 00000011)
  177. 9176 // THIS ROUTINE SETS UP AN ARRAY THAT ALLOWS THIS TO HAPPEN
  178. 9177 ZONE 10
  179. 9178 I:=0
  180. 9179 FOR I1:=0 TO 1 DO
  181. 9180 FOR I2:=0 TO 1 DO
  182. 9181 FOR I3:=0 TO 1 DO
  183. 9182 FOR I4:=0 TO 1 DO
  184. 9183 FOR I5:=0 TO 1 DO
  185. 9184 FOR I6:=0 TO 1 DO
  186. 9185 FOR I7:=0 TO 1 DO
  187. 9186 FOR I8:=0 TO 1 DO
  188. 9187 IHS:=I8*128+I7*64+I6*32+I5*16+I4*8+I3*4+I2*2+I1
  189. 9188 I:=I+1
  190. 9189 VAL(I):=IHS
  191. 9190 //PRINT I,IHS
  192. 9191 ENDFOR I8
  193. 9192 ENDFOR I7
  194. 9193 ENDFOR I6
  195. 9194 ENDFOR I5
  196. 9195 ENDFOR I4
  197. 9196 ENDFOR I3
  198. 9197 ENDFOR I2
  199. 9198 ENDFOR I1
  200. 9199 ENDPROC MIRRORBIT
  201.